package com.haoxi.gateway.util;

public class Text
{
  /**
   * �ֽ��ַ��ָ�����ַ����飬radix�Ǵ�С��content���ַ�
   */
  public static String[] getString(int radix,String content)
  {
    int contentLength=0;
      contentLength=content.length();
    try
    {
      content=new String(content.getBytes("8859_1"),"GB2312");
      contentLength=content.length();
      if(contentLength==0)
      {
        content=new String(content.getBytes("UnicodeBig"),"GB2312");
        contentLength=content.length();
      }
    }catch(Exception e){}
    int size=contentLength/radix;
    size=(contentLength-size*radix)>0 ? size+1 :size;
//    System.out.println("size="+size+",contentLength="+contentLength);
    String oneContent[]=new String[size];
    for(int i=0;i<size;i++)
    {
      int start=i*radix;
      int end=(i+1)*radix;
      if(end>contentLength)
        end=contentLength;
      oneContent[i]=content.substring(start,end);
    }
    return oneContent;
  }
  /**
   * ���ַ�ָ�ɶ����ַ�
   * @param ii  �ַ�ı����ʽ��Ĭ��Ϊ8 ,
   * @param radix �ָ���һ���ַ�ĳ���
   * @param content ��ָ���ַ�����
   * @return  �ָ����ַ�����
   */
  public static String[] getString(int ii,int radix,String content)
  {
    int contentLength=0;
      contentLength=content.length();
    int size=contentLength/radix;
    size=(contentLength-size*radix)>0 ? size+1 :size;
//    System.out.println("size="+size+",contentLength="+contentLength);
    String oneContent[]=new String[size];
    for(int i=0;i<size;i++)
    {
      int start=i*radix;
      int end=(i+1)*radix;
      if(end>contentLength)
        end=contentLength;
      oneContent[i]=content.substring(start,end);
    }
    return oneContent;
  }
  /**
   * ��byte�����ݱ����ʽ��ͬת���ɲ�ͬ�����ʽ���ַ�
   * @param Msg_fmt  ����ı����ʽ
   * @param Msg_Content ��ת��������
   * @return  ת������ַ�
   */
   public static String getText(int Msg_fmt,byte[] Msg_Content)
   {
     return getText(Msg_fmt,Msg_Content.length,Msg_Content);
   }
   /**
    * ��byte�����ݱ����ʽ��ͬת���ɲ�ͬ�����ʽ���ַ�
    * @param Msg_fmt  ����ı����ʽ
    * @param len      ���ݳ���
    * @param Msg_Content ��ת��������
    * @return  ת������ַ�
    */
   public static String getText(int Msg_fmt,int len, byte[] Msg_Content)
   {
        len=len & 0xff;
        //System.out.println("Msg_fmt="+Msg_fmt+",len="+len);
        byte b[] = new byte[len];
        for(int i=0 ; i<len;i++)
        {
            b[i] = Msg_Content[i];
            //System.out.print(b[i]);
        }
        String s="";
         try
         {
            if(Msg_fmt==0)
            {
             s=new String(b);
            }
           else if(Msg_fmt==8)
            {
             s=new String(b,"UnicodeBig");
            }
           else if(Msg_fmt==15)
           {
             s = new String(b, "GB2312");
           }
           else if(Msg_fmt==10)
           {
             s=new String(b,"UnicodeBig");
           }
           else
             s=new String(b);
         }catch(Exception e){
           e.printStackTrace();
         }
         //System.out.println("receive Text="+s);
         return s.trim();
    }
   /**
    * ���ַ��ݸ��ı����ʽת����byte����
    * @param dcs  �ַ�����ʽ
    * @param s ��ת�����ַ�
    * @return  ת�����byte����
    */
   public static byte[] textToByte(int dcs,String s)
   {
     byte[] tempbytes=null;
     if(dcs==8)
       tempbytes=textToByte(s);
     else if(dcs==0x18)
     {
       byte[] t=textToByte(s);
       tempbytes=new byte[t.length+2];
       tempbytes[0]=0x00;
       tempbytes[1]=0x01;
       for(int i=0;i<t.length;i++)
         tempbytes[i+2]=t[i];
     }
     else if (dcs==15)
         tempbytes=s.getBytes();
     else if (dcs==4)
         tempbytes=convertStringToBytes(s);
     else
       tempbytes=textToByte(s);
     return tempbytes;
   }

   public static byte[] convertStringToBytes(String srcBuff)
        {
            byte dest[] = (byte[])null;
            try
            {
                dest = new byte[srcBuff.length() / 2];
                int j = 0;
                for (int i = 0; i < srcBuff.length(); )
                {
                    String subBuff = srcBuff.substring(i, i + 2);
                    byte ab = (byte) Integer.parseInt(subBuff, 16);
                    dest[j] = ab;
                    i += 2;
                    j++;
                }

                return dest;
            }
            catch (Exception exception)
            {
                return dest;
            }
        }

   /**
    * ���ַ�ת����unicode������ֽ�����
    * @param s  ��ת�����ַ�
    * @return  ת�����unicode���������
    */
   public static byte[] textToByte(String s)
   {
      byte[] tempbytes=new byte[s.length()*2];
      char[] c=s.toCharArray();
      int  j=0;
      for(int ei=0;ei<c.length;ei++)
      {
         int d1=c[ei]%16;
         int d2=(c[ei]/16)%16;
         int d3=(c[ei]/(16*16))%16;
         int d4=(c[ei]/(16*16*16))%16;
         String s1=new StringBuffer(Integer.toHexString(d4)).append(Integer.toHexString(d3)).toString();
         String s2=new StringBuffer(Integer.toHexString(d2)).append(Integer.toHexString(d1)).toString();
         tempbytes[j]=(byte)Integer.parseInt(s1,16);
         tempbytes[j+1]=(byte)Integer.parseInt(s2,16);
         j+=2;
       }
       return tempbytes;
   }

   /**
    * ��unicode���͵�byte����ת�����ַ�
    * @param b  ��ת��������
    * @return ת������ַ�
    */
   public static String byteToText(byte[] b)
   {
      char[] c=new char[b.length/2];
      for(int i=0,j=0;i<c.length;i+=2)
      {
        String b1="00"+Integer.toHexString(b[i]);
        String b2="00"+Integer.toHexString(b[i+1]);
        if(b1.length()>2)
          b1=b1.substring(b1.length()-2,b1.length());
        if(b2.length()>2)
        b2=b2.substring(b2.length()-2,b2.length());
        c[j]=(char)Integer.parseInt(b1+b2,16);
        j++;
      }
      return new String(c);
   }
   public static void main(String args[])
   {
     byte[] b=new byte[]{(byte)0x4f,(byte)0x60,(byte)0x59,(byte)0x1a,(byte)0x59,(byte)0x27,(byte)0x4e,(byte)0x86};
     String s=getText(10,b);
     System.out.println(s);
   }
}